/**
 * 主要思想：利用原型让一个引用类型继承另一个引用类型的实例的属性和方法
 * 缺陷：
 *      1. 原型会变成另一个类型的实例，原先的实例属性变成了现在的原型属性，该原型的引用类型属性会被所有实例共享。
 *      2. 创建子类型的实例时，不能向超类型的构造函数传递参数。
 */
function SuperType () {
  this.name = 'Yeoman',
  this.colors = ['green', 'blue']
}

SuperType.prototype.sayName = function () {
  console.log(this.name)
}

function SubType () {
  this.age = 21
}

SubType.prototype = new SuperType()

SubType.prototype.sayAge = function () {
  console.log(this.age)
}

const instance1 = new SubType()
instance1.colors.push('yellow')
console.log(instance1.colors)

const instance2 = new SubType()
console.log(instance2.colors)
